package cn.bud.msgbus.server.server.subscribe;

import java.lang.annotation.*;

/**
 * Subscriber
 *
 * @author hxj
 * @version 1.0
 * @description
 * @date 2024-06-19 14:55
 */
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface LocalSubscribe {

    /**
     * 主题
     * @return
     */
    String mainTopic() default "";

    /**
     * 副主题
     * @return
     */
    String subTopic() default "";

    /**
     * 是否异步处理
     * true: 异步处理，无返回值
     * false: 同步处理，有返回值 TODO 暂未实现
     * @return
     */
    boolean async() default true;

    /**
     * 订阅的数据来源 {@link SrcType}
     * @return
     */
    SrcType srcType() default SrcType.LOCAL;

    /**
     * 处理数据的类型
     * @return
     */
    Class<?> dataClazz() default Void.class;

    enum SrcType {
        LOCAL,
        REMOTE
    }
}
